
public class Gestormapa {
Mapa mapa;
Gestormapa(){
	mapa=new Mapa();
}



public boolean pisable(int x,int y,BaseDatos datos){
	
	if(this.mapa.existe(x, y))return false;
	//Se encuentra fuera del mapa.
	Celda a=this.mapa.get(x, y);
	if(!a.estavacio())return false;//esta ocupado por un batallon o por un arma.
	if(((Suelos)(datos.get(a.getCodSuelo()))).getTipo()==2)return false;//no se puede pisar.
	return true;
}

public void insertarbatallon(String codigo,int x, int y,BaseDatos datos){
	if(pisable(x,y,datos)){//Si es valida la posicion.
	
		//Se modifica la informacion del mapa.
		this.mapa.vaciar(x, y);
		this.mapa.llenarbatallon(x, y, codigo);
		//Se agrega a la lista de valores posicionados en el mapa.
		this.mapa.agregarposicion(codigo, x, y);
		
		//Se activa el valor en el batallon.
		Batallon modificado=(Batallon)datos.get(codigo);
		modificado.setActivo(true);
		datos.modificar(codigo, modificado);
	}
}

public void insertararma(String codigo,int x,int y,BaseDatos datos){
	if(pisable(x,y,datos)){
		this.mapa.vaciar(x, y);
		this.mapa.llenararma(x, y, codigo);
		this.mapa.agregarposicion(codigo, x, y);
	}
}
public void quitarbatallon(String codigo,BaseDatos datos){
	String posicion=this.mapa.getposicion(codigo);
	this.mapa.vaciar(Mapa.codanumx(posicion),Mapa.codanumy(posicion));
	
	Batallon modificado=(Batallon)datos.get(codigo);
	modificado.setActivo(false);
	datos.modificar(codigo, modificado);
	this.mapa.quitarposicion(codigo);
} 


public void moverbatallon(Character direccion,int x,int y,BaseDatos datos){
	int nuevax=x;
	int nuevay=y;
	switch(direccion){
	case 'W':nuevay=y-1;break;
	case 'A':nuevax=x-1;break;
	case 'S':nuevay=y+1;break;
	case 'D':nuevax=x+1;break;
	default:return;
	}
	
	if(!pisable(nuevax,nuevay,datos))return;
	
	Celda a=this.mapa.get(x, y);
	String codbatallon=a.getCodBatallon();
	this.mapa.vaciar(x, y);
	this.mapa.llenarbatallon(nuevax,nuevay, codbatallon);
	
	this.mapa.quitarposicion(codbatallon);
	this.mapa.agregarposicion(codbatallon,nuevax,nuevay);
	
}


}